package com.ycrlkj.android.modulespublic.common.arouter;

import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.facade.service.SerializationService;
import com.alibaba.fastjson.JSON;
import com.ycrlkj.android.modulesbase.libbase.utils.Logger;
import java.lang.reflect.Type;

/**
 * 使用ARouter传送自定义对象参数时, 需写一个类实现SerializationService, 并添加注解 @Route(path = "/service/json")
 *
 * ARouter在传参时, 会先调用此实现类 object2Json方法, 将对象序列化
 * 在接收参数时, 会调用 json2Object 将对象还原为原对象
 *
 * 要求:
 * 1, 自定义对象不得实现序列化类, 会和此类中的方法冲突
 * 2, 自定义对象必须有无参构造方法
 *
 */
@Route(path = "/service/json")
public class JsonServiceImpl implements SerializationService {
    @Override
    public <T> T json2Object(String input, Class<T> clazz) {
        Logger.e("json2Object");
        return JSON.parseObject(input, clazz);
    }

    @Override
    public String object2Json(Object instance) {
        Logger.e("object2Json");
        return JSON.toJSONString(instance);
    }

    @Override
    public <T> T parseObject(String input, Type clazz) {
        Logger.e("parseObject");
        return JSON.parseObject(input, clazz);
    }

    @Override
    public void init(Context context) {

    }
}
